package com.lft.com.oilgas.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 *@Configuration  容器一启动 就会从使用了@Configuration的类上面开始工作
 * 首先会创建这个类的对象
 */
// component注解
@Configuration
public class KuaYuChuLi implements WebMvcConfigurer {
    // 当前跨域请求最大有效时长。这里默认1天
    private static final long MAX_AGE =  60 * 60;


    // 注入拦截器对象
    @Autowired
    private CommonInteceptor commonInteceptor;


    /**
     * registry.addInterceptor(commonInteceptor).addPathPatterns("/h1").excludePathPatterns("/pp");
     * 这个拦截器只拦截h1请求 不拦截pp请求
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 这个拦截器负责拦截所有的请求
        registry.addInterceptor(commonInteceptor).addPathPatterns("/**");
    }

    /**
     * 专门用来解决跨域问题
     * @param registry
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 我们的跨域请求只针对当前项目的所有controller请求
        // allowedOrigins() 允许的源
        // allowedMethods("*") 允许的请求方式
        // maxAge(MAX_AGE)  跨域的有效期
        // allowedHeaders("*")  前端向后端发请求时  我们前端可以向请求头中存放的数据
        registry.addMapping("/**").
                allowedOrigins("*").
                allowedMethods("*").
                maxAge(MAX_AGE).
                allowedHeaders("*");
    }
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/ABC/**").addResourceLocations("file:///I:/Java/ABC/");
    }
}
